由於我們裝gitea的方式是使用docker安裝的,那麼我們只需要透過
Filebeat
來幫我們將Log輸出到Elasticsearch
就好囉!
Filebeat是用於轉發和集中日誌數據的輕量級傳送程序。作為服務器上的代理安裝,Filebeat監視您指定的日誌文件或位置,收集日誌事件,並將它們轉發到Elasticsearch或 Logstash進行索引。
這裡先放個簡單的filebeat設定檔
filebeat.config:
modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
filebeat.autodiscover:
providers:
- type: docker
hints.enabled: true
processors:
- add_cloud_metadata: ~
setup.template.name: "gitea"
setup.template.pattern: "gitea-*"
setup.ilm.enabled: false
logging.json: true
logging.metrics.enabled: false
output.elasticsearch:
hosts: '${ELASTICSEARCH_HOSTS:elasticsearch:9200}'
username: '${ELASTICSEARCH_USERNAME:}'
password: '${ELASTICSEARCH_PASSWORD:}'
index: "gitea-%{+yyyy.MM.dd}"
另外有很多設定可以參照官方文件
https://www.elastic.co/guide/en/beats/filebeat/current/elasticsearch-output.html
docker run -d \
--name=filebeat \
--user=root \
--volume="$(pwd)/filebeat_docker.yml:/usr/share/filebeat/filebeat.yml:ro" \
--volume="/mnt/disks/docker/docker/containers:/var/lib/docker/containers:ro" \
--volume="/var/run/docker.sock:/var/run/docker.sock:ro" \
docker.elastic.co/beats/filebeat:7.7.1 filebeat -e -strict.perms=false \
-E output.elasticsearch.hosts=["xxx.xxx.xxx.xxx:9200"]
這樣 Filebeat 就會把 container log 送到 Elasticsearch 上
之後再依照自訂定義的index去撈出log來看,大概就會長這樣子
今日我們就先完成gitea container log 輸出到 ELK的步驟囉,是不是很簡單呢?
另外對ELK有想要更了解的讀者們,我推薦 Elastic Stack 是一把梭,用起來再說 系列